package cn.lizemin.scheduledTask.quartz;

import lombok.SneakyThrows;
import org.quartz.*;
import org.quartz.impl.StdSchedulerFactory;

import static org.quartz.JobBuilder.newJob;
import static org.quartz.SimpleScheduleBuilder.simpleSchedule;
import static org.quartz.TriggerBuilder.newTrigger;

/**
 * @author: lizemin
 * @version: 1.0
 */
public class QuartzTest {
    //这是一个main方法,是程序的入口
    @SneakyThrows
    public static void main(String[] args) throws SchedulerException {
        /**
         * 执行器
         */
        Scheduler scheduler = StdSchedulerFactory.getDefaultScheduler();
        /**
         * trigger
         * 对时间的配置,
         * withIdentity为时间设置一个名字和组
         * newTrigger()是quartz中的一个静态方法，使用这个需要导入包（静态方法可以直接用，不需要类名）
         * withIntervalInSeconds(1):每秒执行一次
         * repeatForever():不断重复
         */
        Trigger trigger = newTrigger().withIdentity("time_1", "time_group1")
                .startNow()
                .withSchedule(simpleSchedule().withIntervalInSeconds(1).repeatForever())
                .build();

        /**
         * 使用map来存储和取出数据
         */
        JobDetail jobDetail = newJob(MyTask.class).withIdentity("task_detail1", "task_group1")
                .usingJobData("user","lizemin")
                .build();

        /**
         * 将任务和时间添加进执行器
         */
        scheduler.scheduleJob(jobDetail,trigger);

        /**
         * 开始任务
         */
        scheduler.start();

        Thread.sleep(100000);

        /**
         * 关闭任务
         */
        scheduler.shutdown();


    }

}
